package com.shurdroides.sintesi;

import java.io.IOException;
import java.util.logging.Logger;

import javax.jdo.PersistenceManager;
import javax.persistence.EntityManager;
import javax.servlet.http.HttpServletRequest;

import com.google.android.c2dm.server.C2DMessaging;
import com.google.android.c2dm.server.DeviceInfo;
import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.datastore.KeyFactory;

/**
 * Accion que envia un mensaje de un usuario a otro mediante c2dm
 * @author alumneT
 *
 */
public class ActionEnviaMensaje extends Action {
	private String usuarioDestino;
	private String mensaje;
	private Region region;
	 private static final Logger log = Logger.getLogger(ActionEnviaMensaje.class.getName());
	
	public ActionEnviaMensaje (HttpServletRequest req, EntityManager em, PersistenceManager pm, Region reg, C2DMessaging push){
		setEntityManager(em);
		setPersistenceManager(pm);
		setCorreoUsuario(req.getParameter("correoUsu"));
		setUsuarioDestino(req.getParameter("destino"));
		setMensaje(req.getParameter("mensaje"));
		setPush(push);
	}

	@Override
	public boolean executeAction(Region reg) throws IOException, Exception {
		 Key k = KeyFactory.createKey(DeviceInfo.class.getSimpleName(), getUsuarioDestino());
		 DeviceInfo device = pm.getObjectById(DeviceInfo.class, k);
			 getPush().sendNoRetry(device.getDeviceRegistrationID(), "collapse", "action", "5", "mensaje", getCorreoUsuario()+" dice: "+getMensaje());
		return true;
	}

	public String getUsuarioDestino() {
		return usuarioDestino;
	}

	public void setUsuarioDestino(String usuarioDestino) {
		this.usuarioDestino = usuarioDestino;
	}

	public String getMensaje() {
		return mensaje;
	}

	public void setMensaje(String mensaje) {
		this.mensaje = mensaje;
	}

	public Region getRegion() {
		return region;
	}

	public void setRegion(Region region) {
		this.region = region;
	}

}
